package org.dromara.common.translation.core.impl;

import org.dromara.common.core.service.OssService;
import org.dromara.common.translation.annotation.TranslationType;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.common.translation.core.TranslationInterface;
import lombok.AllArgsConstructor;


/**
 * @Author 刘武贵
 * @Date 2024/8/15 22:00
 * @Description 功能描述：OSS翻译实现
 */
@AllArgsConstructor
// 指定翻译类型为OSS资源ID转URL的转换
@TranslationType(type = TransConstant.OSS_ID_TO_URL)
/**
 * OSS URL 转换实现类
 * 本类实现了 TranslationInterface 接口，用于对传入的字符串类型的 OSS（对象存储服务）URL进行特定的转换处理
 * 主要实现了对URL格式的校验和转换逻辑，确保转换后的URL符合特定的格式要求
 */
public class OssUrlTranslationImpl implements TranslationInterface<String> {

    /**
     * 通用 OSS服务
     */
    private final OssService ossService;

    /**
     * 根据提供的键翻译并获取文件的URL
     *
     * @param key 可以是String类型或Long类型的ID，用于标识特定的文件
     * @param other 保留参数，目前未使用
     * @return 文件的URL字符串如果无法解析key，则返回null
     */
    @Override
    public String translation(Object key, String other) {
        if (key instanceof String ids) {
            return ossService.selectUrlByIds(ids);
        } else if (key instanceof Long id) {
            return ossService.selectUrlByIds(id.toString());
        }
        return null;
    }
}
